<?php
class Cont_RecDAO extends GenericDAO  {

	function __construct() {
		$this->tabela["alteracao"] = array(	"id" 	=> 323,
											"nome" 	=> strtolower(substr(get_class(), 0, -3)));
	
		$this->tabela["consulta"]  = array(	"id" 	=> 339,
											"nome" 	=> "vw_" . strtolower(substr(get_class(), 0, -3)));
	}
	
	public function consultarPK($valor) {
	    $sql = "where id = :id";
	    $params['id'] = $valor;
	    return $this->consultar($sql, $params);
	}
	
	public function consultarQuitacao($pedido) {
		$sql = "where pd_pedido = :pedido and tipo = 'P' and recebto = ''";
		$params['pedido'] = $pedido;
		return $this->consultar($sql, $params);
	}
	
	public function inserir($registro, $finalizarTransacao = true) {
		
		$data = explode('/',$registro['data']);
		if (isset($data[2])) {
			$registro['data'] = $data[2] . "-" . $data[1] . "-" . $data[0];
		} else {
			unset($registro['data']);
		}
		
		$data = explode('/',$registro['vcto']);
		if (isset($data[2])) {
			$registro['vcto'] = $data[2] . "-" . $data[1] . "-" . $data[0];
		} else {
			unset($registro['vcto']);
		}
		
		if (isset($registro['recebto'])) {
			$data = explode('/',$registro['recebto']);
			if (isset($data[2])) {
				$registro['recebto'] = $data[2] . "-" . $data[1] . "-" . $data[0];
			} else {
				unset($registro['recebto']);
			}
		}
		
		$this->inserirRegistro($registro, $finalizarTransacao);
		$registro['id'] = $this->ultimoId();
		return $registro;
	}
	
	public function excluir($id, $finalizarTransacao = true) {
		$pk['id'] = $id;
		return $this->excluirRegistro($pk, $finalizarTransacao);	
	}
	
	public function alterar($registro, $finalizarTransacao = true) {
		$pk['id'] 		= $registro['id'];
		unset($registro['id']);

		if (isset($registro['data'])) {
			$data = explode('/',$registro['data']);
			if (isset($data[2])) {
				$registro['data'] = $data[2] . "-" . $data[1] . "-" . $data[0];
			} else {
				unset($registro['data']);
			}
		}
		
		if (isset($registro['vcto'])) {
			$data = explode('/',$registro['vcto']);
			if (isset($data[2])) {
				$registro['vcto'] = $data[2] . "-" . $data[1] . "-" . $data[0];
			} else {
				unset($registro['vcto']);
			}
		}
		
		if (isset($registro['recebto'])) {
			$data = explode('/',$registro['recebto']);
			if (isset($data[2])) {
				$registro['recebto'] = $data[2] . "-" . $data[1] . "-" . $data[0];
			} else {
				$registro['recebto'] = "0000-00-00 00:00:00";
			}
		}
		
		if (!isset($registro['juros'])) {
			$registro['juros'] = "0";
		}
		
		if (!isset($registro['vr_recebido']) || ($registro['vr_recebido'] == "")) {
			$registro['vr_recebido'] = "0";
		}
		
		return $this->alterarRegistro($registro, $pk, $finalizarTransacao);
	}
	
	public function suspenderConcessao($id_pedido, $finalizarTransacao = true) {
		$sql = "update cont_rec set tipo = :tipo, recebto = :recebto, vr_recebido = :vr_recebido, historico2 = :historico2 where vcto > :hoje and pedido = :pedido";
		$params['tipo'] 		= 'R';
		$params['recebto']		= date('d/m/Y');
		$params['vr_recebido']	= 0;
		$params['historico2']	= 'Suspensão da concessão em ' . date('d/m/Y');
		$params['hoje']			= date('d/m/Y');
		$params['pedido']		= $id_pedido;

		return $this->execSQL($sql, $params, $finalizarTransacao);
	}
	
	public function transferirConcessao($id_pedido, $id_adquirente, $finalizarTransacao = true) {
		$sql = "update cont_rec set adquirente = :ad_id where pedido = :pd_id";
		$params['ad_id'] = $id_adquirente;
		$params['pd_id'] = $id_pedido;
		
		return $this->execSQL($sql, $params, $finalizarTransacao);
	}

	public function consultarDebitos($ad_id) {
		$sql = "where dt_vcto < current_timestamp and recebto = '' and ad_id = :ad_id";
		$params['ad_id'] = $ad_id;
	    return $this->consultar($sql, $params);
	}
	
	public function consultarTotalDebitos($ad_id) {
		$sql = "select coalesce(sum(vr_titulo), 0) as vr_total, replace(replace(replace(format(coalesce(sum(vr_titulo), 0), 2), '.', '@'), ',', '.'), '@', ',') total from vw_cont_rec where dt_vcto < current_timestamp and recebto = '' and ad_id = :ad_id";
		$params['ad_id'] = $ad_id;
	    return $this->execQuery($sql, $params);
	}
	
	public function consultarAVencer($ad_id) {
		$sql = "where dt_vcto >= current_timestamp and recebto = '' and ad_id = :ad_id";
		$params['ad_id'] = $ad_id;
		return $this->consultar($sql, $params);
	}
	
	public function consultarTotalAVencer($ad_id) {
		$sql = "select coalesce(sum(vr_titulo), 0) as vr_total, replace(replace(replace(format(coalesce(sum(vr_titulo), 0), 2), '.', '@'), ',', '.'), '@', ',') total from vw_cont_rec where dt_vcto >= current_timestamp and recebto = '' and ad_id = :ad_id";
		$params['ad_id'] = $ad_id;
	    return $this->execQuery($sql, $params);
	}
	
	public function consultarPagos($ad_id) {
		$sql = "where recebto <> '' and ad_id = :ad_id";
		$params['ad_id'] = $ad_id;
		return $this->consultar($sql, $params);
	}

	public function consultarTotalPagos($ad_id) {
		$sql = "select coalesce(sum(vr_titulo), 0) as vr_total, replace(replace(replace(format(coalesce(sum(vr_titulo), 0), 2), '.', '@'), ',', '.'), '@', ',') total from vw_cont_rec where recebto <> '' and ad_id = :ad_id";
		$params['ad_id'] = $ad_id;
	    return $this->execQuery($sql, $params);
	}
	
	public function consultarRelatorio($contas, $dt_ini, $dt_fim, $tipo_rel, $tipo_conta, $ordem) {
		$data = explode("/", $dt_ini);
		$data_ini = $data[2] . "-" . $data[1] . "-" . $data[0];
		
		$data = explode("/", $dt_fim);
		$data_fim = $data[2] . "-" . $data[1] . "-" . $data[0];
		
		$where = "where ";
		switch ($contas) {
			case 'a':
				$where .= "dt_vcto between :dt_ini and :dt_fim and dt_recebto is null ";
				$params['dt_ini'] = $data_ini;
				$params['dt_fim'] = $data_fim;
				break;
			case 'p':
				$where .= "dt_vcto < :dt_fim and dt_recebto is null ";
				$params['dt_fim'] = $data_fim;
				break;
			case 'r':
				$where .= "dt_recebto between :dt_ini and :dt_fim ";
				$params['dt_ini'] = $data_ini;
				$params['dt_fim'] = $data_fim;
				break;
		}
		
		switch ($tipo_rel) {
			case "c":
				$where .= "nome like :nome ";
				$params['nome'] = "$filtro%";
				break;
			case "u":
				$where .= "nome = :nome ";
				$params['nome'] = $filtro;
				break;
		}
		
		switch ($tipo_conta) {
			case "M":
			case "P":
				$where .= "tipo = :tipo ";
				$params['tipo'] = $tipo_conta;
				break;
			case "O":
				$where .= "tipo not in ('M','P') ";
				break;
		}
		
		switch ($ordem) {
			case 'c':
				$where .= "order by ad_nome ";
				break;
			case 'd':
				$where .= "order by dt_vcto ";
				break;
		}
		
		return $this->consultar($where, $params);
	}
	
	public function consultarRazao($tipo, $cliente) {
		$where = "where ";
		$params = array();
		switch ($tipo) {
			case "c":
				$where .= "nome like :nome ";
				$params['nome'] = "$cliente%";
				break;
			case "u":
				$where .= "nome = :nome ";
				$params['nome'] = $cliente;
				break;
		}
		$order = " order by ad_nome, dt_data";
		return $this->consultar($where, $params, $order);
	}
	
	public function importar($registro, $finalizarTransacao = true) {
		$this->inserirRegistro($registro, $finalizarTransacao);
		$registro['id'] = $this->ultimoId();
		return $registro;
	}
}
?>